# [钛哥]: 不懂科技就会落伍！每天进步一点点!
# [钛哥]: Python字符串格式化魔法：告别字符串拼接烦恼！
# [钛妹]: 钛哥钛哥，我昨天写Python代码，想把数字和字符串放一起，结果报错了！
# [钛妹]: 这是为什么呀？
age = 36
txt = "我的名字是John，我 " + age  # 这行会报错
# [钛哥]: 哈哈，钛妹，你是不是想用 '+' 直接连字符串和数字？Python可不这样哦！

# [钛哥]:  你看，像上面这行被注释掉的代码，直接用 '+' 连接字符串 "我的名字是John，我 " 和数字 `age` (36)，
# [钛哥]:  Python会报错，告诉你类型不匹配!
# [钛妹]:  啊？那要怎样才能把它们放一起呢？手动转字符串太麻烦了吧！
# [钛妹]:  难道没有简单的方法吗？
# [钛哥]:  当然有！Python早就准备好了超好用的字符串格式化方法，比如 f-strings 和 format() 方法！
# [钛哥]:  今天先给你讲讲现在最流行的 f-strings！

# [钛哥]:  f-strings 是 Python 3.6 之后出的神器，现在很流行，用起来超方便！
# [钛哥]:  想用 f-string，只需在字符串前加个小写 f，然后用花括号 {} 把变量或表达式括起来就行！
age = 36
txt = f"我的名字是John，我 {age} 岁了"
print("【f-strings基础】", txt)  # 输出：我的名字是John，我 36 岁了

# [钛妹]:  哇！真的耶！花括号好神奇！如果我想放运算，可以吗？
# [钛妹]:  不只是变量，运算也行吗？
# [钛哥]:  钛妹真是好奇宝宝！当然可以！f-strings 的花括号里，支持各种Python代码！
price = 59
txt = f"价格是 {price} 美元"
print("【变量嵌入】", txt)  # 输出：价格是 59 美元

# [钛哥]:  更厉害的是，花括号里还能直接写数学运算！
txt = f"批量购买价：{20 * 59} 美元"  
print("【运算嵌入】", txt)  # 输出：批量购买价：1180 美元

# [钛妹]:  嗯嗯，真方便！不过，我想让价格显示漂亮点，比如保留两位小数，可以吗？
# [钛哥]:  问得好！用冒号:加格式化类型就能实现！
txt = f"精确价格：{59:.2f} 美元"  
print("【精度控制】", txt)  # 输出：精确价格：59.00 美元

# [钛妹]: 钛哥，我之前还见过有人用.format()，这个和f-strings有什么区别吗？
# [钛哥]: 钛妹问得好！format()是另一种常用方法，兼容旧版本Python，用大括号{}作占位符：
txt = "我是{}，今年{}岁".format("Mike", 28)
print("\n【format基础】", txt)  # 输出：我是Mike，今年28岁

# [钛哥]: 还能用数字索引重复使用参数：
txt = "原价：{0}，特价：{0:.1f}！".format(99.987)
print("【索引参数】", txt)  # 输出：原价：99.987，特价：100.0！

# [钛哥]: 命名参数能让代码更清晰：
txt = "坐标：{x}, {y}".format(x=120.5, y=38.2)
print("【命名参数】", txt)  # 输出：坐标：120.5, 38.2

# [钛妹]: 原来format()也能用修饰符呀！
# [钛哥]: 当然！两种方法格式控制是相通的：
txt = "温度：{:.1f}℃".format(23.456) 
print("【format精度】", txt)  # 输出：温度：23.5℃

# [钛哥]:  好啦，钛妹，今天学了两种字符串格式化方法，你总结一下？
# [钛妹]: 好嘞！
# [钛妹]: 第一，f-strings：直接在字符串里嵌入{变量}，还能写{1+1}这样的运算！
# [钛妹]: 第二，format()：用"{}".format(参数)，支持位置、命名、索引多种玩法！
# [钛妹]: 第三，修饰符通用：像{num:.2f}这种格式控制，两种方法都能用！
# [钛哥]: 总结到位！快看终极对比示例：
name = "Lisa"
print("\n【终极对比】")
print(f"f-string: 你好，{name.upper()}！")  # 输出：你好，LISA！
print("format: 你好，{}！".format(name.title()))  # 输出：你好，Lisa！

print("\n好啦，这期内容到此结束，你是不是感觉又进步了一点点？点赞关注不迷路！")